home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
pascal
/
csdudes.exe
/
PDXFLD.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1992-02-27
|
15KB
|
518 lines
/*┌───────────────────────────────────────────────────────────────────────┐
│ │
│ Module: PDXFLD.CPP │
│ Author: Rick Kligman │
│ Purpose: Source code for Field class │
│ │
│ Last Modified: 05-17-91 00:34am │
│ │
│ Copyright 1991 Rick Kligman │
│ This code may be freely used and distributed in commercial apps │
│ provided some mention of PXBuddy++ is made in the documentation. │
│ │
│ Version 1.00 │
└───────────────────────────────────────────────────────────────────────┘ */
#include "pdxfld.hpp"
#ifndef __STDIO_H
#include <stdio.h>
#endif
#include "pdxtbl.hpp"
// ╓───────────────────────────────────────────────────────────────╖
// ║ Constructor for absfld class ║
// ╚═══════════════════════════════════════════════════════════════╝
absfld::absfld()
{
}
// ╓───────────────────────────────────────────────────────────────╖
// ║ Destructor for absfld class ║
// ╚═══════════════════════════════════════════════════════════════╝
absfld::~absfld()
{
}
// ╓───────────────────────────────────────────────────────────────╖
// ║ Constructor for CharFld class ║
// ╚═══════════════════════════════════════════════════════════════╝
CharFld::CharFld()
{
size = 0;
}
// ╓───────────────────────────────────────────────────────────────╖
// ║ Destructor for CharFld class ║
// ╚═══════════════════════════════════════════════════════════════╝
CharFld::~CharFld()
{
if (size)
delete data;
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Initialize CHAR Field ║
// ╚═════════════════════════════════════════════════════════════╝
int CharFld::setinfo(pxtable& tblptr, char *fldname)
{
int err;
char fldtype [6]; // will hold len of field...A5, A23, A176 etc..
tblp = &tblptr;
err = PXFldHandle(tblp->th, fldname, &fh);
CKERR;
err = PXFldType(tblp->th, fh, 6, fldtype);
CKERR;
size = atoi(fldtype + 1) + 1; // get len of field plus NULL char
data = new char [size]; // allocate memory for var storage
if ( ! data )
return (PXERR_OUTOFMEM);
return PXSUCCESS;
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Read CHAR Field from record buffer ║
// ╚═════════════════════════════════════════════════════════════╝
int CharFld::get()
{
int blank;
int err;
err = PXFldBlank(tblp->rh, fh, &blank);
CKERR;
if (blank) // char field was blank
data [0] = NULL;
else
err = PXGetAlpha(tblp->rh, fh, size, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ╓─────────────────────────────────────────────────────────────────────────╖
// ║ Overload = to put contents into class ║
// ╚═════════════════════════════════════════════════════════════════════════╝
void CharFld::operator = (char *newval)
{
strncpy(data, newval, size);
data [size - 1] = NULL; // terminate the string
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Write CHAR Field to record buffer ║
// ╚═════════════════════════════════════════════════════════════╝
int CharFld::put(int)
{
int err;
err = PXPutAlpha(tblp->rh, fh, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Search a CHAR Field ║
// ╚═════════════════════════════════════════════════════════════╝
int CharFld::search(char *srchvar, int mode)
{
int err;
RECORDHANDLE newrh;
PXNetTblRefresh(tblp->th); // added by AFF for Network Support
err = PXRecBufOpen(tblp->th, &newrh);
CKERR;
err = PXRecBufEmpty(newrh);
CKERR;
err = PXPutAlpha(newrh, fh, srchvar);
if ( err ) {
PXRecBufClose(newrh);
return err;
}
err = search_fld(tblp->th, newrh, tblp->keyed, mode);
PXRecBufClose(newrh);
return (err); // if no error then PXSUCCESS will be returned
}
// ╓───────────────────────────────────────────────────────────────╖
// ║ Constructor for ShortFld class ║
// ╚═══════════════════════════════════════════════════════════════╝
ShortFld::ShortFld()
{
}
// ╓───────────────────────────────────────────────────────────────╖
// ║ Destructor for ShortFld class ║
// ╚═══════════════════════════════════════════════════════════════╝
ShortFld::~ShortFld()
{
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Initialize SHORT Field ║
// ╚═════════════════════════════════════════════════════════════╝
int ShortFld::setinfo(pxtable &tblptr, char *fldname)
{
int err;
tblp = &tblptr;
err = PXFldHandle(tblp->th, fldname, &fh);
return (err); // if no error then PXSUCCESS will be returned
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Read SHORT Field from record buffer ║
// ╚═════════════════════════════════════════════════════════════╝
int ShortFld::get()
{
int blank;
int err;
err = PXFldBlank(tblp->rh, fh, &blank);
CKERR;
if (blank) // short field was blank
data = 0;
else
err = PXGetShort(tblp->rh, fh, &data);
return (err); // if no error then PXSUCCESS will be returned
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Write SHORT Field to record buffer ║
// ╚═════════════════════════════════════════════════════════════╝
int ShortFld::put(int blank)
{
int err;
if ( data == 0 && blank )
err = PXPutBlank(tblp->rh, fh);
else
err = PXPutShort(tblp->rh, fh, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ╓─────────────────────────────────────────────────────────────╖
// ║ Search a SHORT Field ║
// ╚═════════════════════════════════════════════════════════════╝
int ShortFld::search(short srchvar, int mode)
{
int err;
RECORDHANDLE newrh;
PXNetTblRefresh(tblp->th); // added by AFF for Network Support
err = PXRecBufOpen(tblp->th, &newrh);
CKERR;
err = PXPutShort(newrh, fh, srchvar);
if ( err ) {
PXRecBufClose(newrh);
return err;
}
err = search_fld(tblp->th, newrh, tblp->keyed, mode);
PXRecBufClose(newrh);
return (err); // if no error then PXSUCCESS will be returned
}
// ╓───────────────────────────────────────────────────────────────╖
// ║ Constructor for DblFld class ║
// ╚═══════════════════════════════════════════════════════════════╝
DblFld::DblFld()
{
}
// ╓───────────────────────────────────────────────────────────────╖
// ║ Destructor for DblFld class ║
// ╚═══════════════════════════════════════════════════════════════╝
DblFld::~DblFld()
{
}
// ╓───────────────────────────────────────────────────